package com.atbeijing.bigdata.spark.core.rdd.operator.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark02_Oper_Transform_1 {

    def main(args: Array[String]): Unit = {

        val conf = new SparkConf().setMaster("local[*]").setAppName("TransformOperator")
        val sc = new SparkContext(conf)

        // TODO 算子 - 转换
        // TODO mapPartitions
        // mapPartitions将分区数据当成整体来进行处理，就需要内存中数据有限制，否则会出现溢出
        // mapPartitions操作处理的数据不会马上释放，需要等待整个分区的数据全部处理完，才会释放
        val rdd : RDD[Int] = sc.makeRDD(List(1,2,3,4), 2)

        val rdd2= rdd.mapPartitions(
            list => {
                list.map(_*2)
            }
        )

        rdd2.collect().foreach(println)

        sc.stop()

    }
}
